Шаг 53 - Объект Database.

Описание
Объект Database представляет открытую базу данных.

Замечания
Работа с открытой базой данных ведется с помощью объекта Database и его методов и свойств. Для баз данных любого типа пользователь имеет следующие возможности:
1. Использовать метод Execute для запуска запроса на изменение.
2. С помощью свойства Connect установить подключение к источнику данных ODBC.
3. С помощью свойства QueryTimeout ограничить время ожидания выполнения запроса к источнику данных ODBC.
4. Использовать свойство RecordsAffected для определения количества записей, измененных в запросе на изменение.
5. Использовать метод OpenRecordset для выполнения запроса на выборку и создания объекта Recordset.
6. С помощью свойства Version определить версию ядра базы данных, в которой была создана база данных.
В базах данных Microsoft Jet (файлы .mdb) можно использовать другие методы, свойства и семейства для работы с объектом Database, а также для создания, изменения или получения информации о содержащихся в базе данных таблицах, запросах и связях. Например, пользователь имеет возможность:
1. Использовать методы CreateTableDef и CreateRelation для создания таблиц и связей, соответственно.
2. Использовать метод CreateProperty для определения новых свойств объекта Database.
3. Использовать метод CreateQueryDef для создания описания постоянного или временного запроса.
4. Использовать методы MakeReplica, Synchronize и PopulatePartial для создания и синхронизации полных или частичных реплик базы данных.
5. С помощью свойства CollatingOrder указать язык, по правилам которого выполняется сортировка символьных полей.
В рабочей области ODBCDirect пользователь имеет возможность:
1. С помощью свойства Connection получить ссылку на объект Connection, соответствующий объекту Database.
При вызове метода CreateDatabase создается постоянный объект Database, который автоматически добавляется в семейство Databases, что приводит к его сохранению на диске.
При использовании метода OpenDatabase нет необходимости указывать объект DBEngine.
Открытие базы данных, содержащей присоединенные таблицы, не приводит к автоматическому установлению связей с указанными внешними файлами или источниками данных ODBC, подключенными к ядру Microsoft Jet. В этом случае требуется либо указать ссылку на соответствующие таблице объекты TableDef или Field, либо открыть для таблицы объект Recordset. Если связи установить не удается, возникает перехватываемая ошибка. К возникновению перехватываемой ошибки приводит также отсутствие необходимых разрешений на доступ к базе данных или попытка установить связь с базой данных, открытой другим пользователем для монопольного доступа.
Допускается также непосредственное открытие с помощью метода OpenDatabase внешней базы данных (такой как FoxPro, dBASE или Paradox) вместо открытия базы данных с ядром Microsoft Jet с последующим присоединением внешних таблиц.
Не рекомендуется непосредственно открывать объект Database для источника данных ODBC, подключенного к ядру Microsoft Jet, такого как Microsoft SQL Server, поскольку запрос возвращает данные медленнее, чем присоединенные таблицы. При открытии объекта Database для внешних бах данных с драйверами ISAM, таких как FoxPro или Paradox, проблем с быстродействием не возникает.
При завершении выполнения процедуры, в которой описан объект Database, этот локальный объект Database закрывается вместе со всеми открытыми объектами Recordset. Любые незавершенные изменения при этом теряются, а незавершенные транзакции свертываются без возникновения перехватываемой ошибки. Чтобы избежать потери изменений пользователь должен в явном виде до выхода из процедуры завершить все транзакции или операции редактирования и закрыть объекты Recordset и объекты Database, описанные в этой процедуре на локальном уровне.
После применения к объекту Workspace одного из методов управления транзакциями (BeginTrans, CommitTrans или Rollback) эти транзакции применяются ко всем базам данных, открытым в объекте Workspace, в котором был открыт этот объект Database. Для того чтобы выполнить независимую транзакцию, следует предварительно открыть дополнительный объект Workspace, а затем открыть в этом объекте Workspace еще один объект Database.
Можно открыть источник данных или базу данных несколько раз, создавая повторяющиеся имена в семействе Databases. После этого следует присвоить объекты Database объектным переменным и ссылаться на объекты по именам переменных.

Пример
Следующая программа создает объект Database и открывает существующий объект Database в стандартном объекте Workspace. Затем печатается семейство Databases и семейство Properties каждого объекта Database.

Sub DatabaseObjectX()

	Dim wrkJet As Workspace
	Dim dbsNorthwind As Database
	Dim dbsNew As Database
	Dim dbsLoop As Database
	Dim prpLoop As Property

	Set wrkJet = CreateWorkspace("JetWorkspace", "admin", "", dbUseJet)

	' Проверяет, что нет файла, имя которого совпадает с именем
	' новой базы данных.
	If Dir("NewDB.mdb") <> "" Then Kill "NewDB.mdb"

	' Создает новую базу данных с указанной
	' языковой настройкой.

	Set dbsNew = wrkJet.CreateDatabase("NewDB.mdb", dbLangGeneral)
	Set dbsNorthwind = wrkJet.OpenDatabase("Борей.mdb")

	' Отображает семейство Databases.
	For Each dbsLoop In wrkJet.Databases
		With dbsLoop
			Debug.Print "Свойства " & .Name
			' Отображает семейство Properties каждого
			' объекта Database.
			For Each prpLoop In .Properties
				If prpLoop <> "" Then Debug.Print "    " &  prpLoop.Name & " = " & prpLoop

			Next prpLoop
		End With
	Next dbsLoop

	dbsNew.Close
	dbsNorthwind.Close
	wrkJet.Close
End Sub
Hosted by uCoz